Code Design Method for Repeat-Zigzag Hadamard Codes

ABSTRACT

A method for selecting a signal to noise ratio for a communications code includes obtaining extrinsic information transfer (EXIT) information for a repeat-zigzag Hadamard (RZH) code responsive to a Hadamard order and a signal to noise ratio, determining code parameters for an irregular repeat zigzag Hadamard (IRZH) code for a corresponding code rate in response to the obtained EXIT values, and repeating the step of obtaining the EXIT information for a different signal to noise ratio if the corresponding code rate is other than a selected rate. The corresponding code rate is related to a bit error rate. In a preferred embodiment, the step of obtaining EXIT information includes one of obtaining an EXIT curve for repeat-zigzag Hadamard code by Monte Carlo simulation using serial decoding or obtaining an EXIT function for parallel decoding of the repeat-zigzag Hadamard code by using equations.

This application claims the benefit of U.S. Provisional Application No. 60/806,152, entitled “Code Design Methods for Repeat-Zigzag Hadamard Codes”, filed on Jun. 29, 2006, and U.S. Provisional Application No. 60/806,149, entitled “Low-Complexity High-performance Low-Rate-Code”, filed on Jun. 29, 2006, the contents of both which are incorporated by reference herein.

BACKGROUND OF THE INVENTION

The present invention relates generally to coding techniques for communications and, more particularly, to code designing for repeat-zigzag Hadamard codes.

For communication systems operating in the low signal-to-noise ratio (SNR) regime (e.g., code-spread communication systems and power-limited sensor networks), low-rate coding schemes play a critical role. Traditional low-rate channel coding schemes include Hadamard codes and super-orthogonal convolutional codes. These codes offer low coding gain and hence their performance is far away from the ultimate Shannon limit. The ultimate Shannon capacity of an Additive White Gaussian Noise (AWGN) channel in terms of SNR per information bit is about −1.6 dB for codes with rates approaching zero. Turbo-code-based, low-rate concatenated coding schemes have been proposed which offer higher performance but they also incur higher complexities due to the complex trellis structures that specify the codes. The low-density parity-check (LDPC) codes and the repeat-accumulate (RA) codes offer capacity-approaching capability for various code rates when the ensemble profiles are optimized. However, in the low-rate region, they both suffer from significant performance loss and extremely slow convergence with iterative decoding. On the other hand, Hadamard codes have been shown to be a useful tool for improving the code performance in the low-rate region. Constructed from Hadamard code arrays, low-rate turbo-Hadamard codes offer a bit-error-rate (BER) of 10⁻⁵ at a signal to noise ratio E_(b)/N₀=−1.2 dB, which is only around 0.4 dB away from the Shannon limit. More recently, built on zigzag codes, parallel-concatenated zigzag-Hadamard (PCZH) codes and repeat-zigzag-Hadamard (RZH) codes have been proposed, both of which exhibit much simpler encoder and decoder structures while still offering a similar performance as that of the turbo-Hadamard codes.

Similar to LDPC codes and RA codes, an RZH code can be represented by its Tanner graph, based on which iterative decoding algorithms can be derived. In two decoding schemes, namely the turbo-like serial decoding and the LDPC-like parallel decoding, it is clear that the parameters of an RZH code need to be chosen carefully for capacity-approaching performance, which leads to the irregular RZH (IRZH) code with optimized degree profile. The exact density evolution method for LDPC code design can be employed for the IRZH code optimization. However, the complexity is extremely high, even for the moderate rate LDPC codes. Density evolution with Gaussian approximation does not work for the design of low-rate RZH codes. Accordingly, there is a need for a design method for low-rate RZH codes.

SUMMARY OF THE INVENTION

In accordance with the invention, there is provided a method to, with a given rate, design the irregular RZH code with minimum signal-to-noise ratio threshold or given a signal-to-noise ratio threshold, design a code ensemble to a maximizing rate. The signal-to-noise ratio threshold means that for any signal-to-noise ratio greater than this threshold, the BER of the code will go to zero or a very small value when the code length is enough long.

In accordance with an aspect of the invention, a method for selecting a signal to noise ratio for a communications code includes obtaining extrinsic information transfer (EXIT) information for a repeat-zigzag Hadamard (RZH) code responsive to a Hadamard order and a signal to noise ratio, determining code parameters for an irregular repeat zigzag Hadamard (IRZH) code for a corresponding code rate in response to the obtained EXIT values, and repeating the step of obtaining the EXIT information for a different signal to noise ratio if the corresponding code rate is other than a selected rate. In a preferred embodiment, the step of obtaining EXIT information includes one of obtaining an EXIT curve for repeat-zigzag Hadamard code by Monte Carlo simulation using serial decoding or obtaining an EXIT function for parallel decoding of the repeat-zigzag Hadamard code by using equations.

In yet another aspect of the invention, a method for selecting a signal to noise ratio for a communications code includes choosing a signal to noise ratio, selecting a Hadamard code order, obtaining extrinsic information transfer (EXIT) information for one of a serial decoding and a parallel decoding of a irregular repeat-zigzag Hadamard (IRZH) code responsive to the Hadamard order and the signal to noise ratio, determining a code ensemble for the irregular repeat zigzag Hadamard (IRZH) code for a related bit error rate in response to the obtained EXIT information, and changing the signal to noise ratio for repeated steps of obtaining the EXIT information and determining a code ensemble for a different signal to noise ratio if the related bit error rate is other than a target rate. Preferably, the EXIT information is a curve for the irregular repeat-zigzag Hadamard (IRZH) code obtained by Monte Carlo simulation using the serial decoding and the EXIT information is a function for parallel decoding the irregular repeat-zigzag Hadamard (IRZH) code using equations.

BRIEF DESCRIPTION OF DRAWINGS

These and other advantages of the invention will be apparent to those of ordinary skill in the art by reference to the following detailed description and the accompanying drawings.

FIG. 1 is a block diagram of a systematical repeat-zig-zag-Hadamard RZH encoder;

FIG. 2 is a block diagram unpunctured, zig-zag-Hadamard RZH encoder;

FIG. 3 is a tanner graph of an unpunctured (n,k) RZH code;

FIG. 4 is a block diagram of turbo-like decoding of systematic RZH codes;

FIG. 4A is a flow chart of the method for code design for serial decoding in accordance with the invention;

FIG. 5 is a block diagram of parallel decoding of systematic RZH codes;

FIG. 5A is a flow chart of the method for code design for parallel decoding in accordance with the invention;

FIG. 6 is a graph of an extrinsic information transfer function (EXIT) of information bits in BIAWGN channel;

FIG. 7 is a graph of an EXIT chart of un-punctured RZH codes with r=4 and R_(c)=0.0179 in the case of serial decoding in accordance with the invention;

FIG. 8 is a graph of bite error rates BERs for un-punctured RZG codes, with an information block length of 65536 and a maximum iteration number of 150, in the case of serial decoding in accordance with the invention;

FIG. 9 is a graph of an EXIT chart of systematic RZH codes with r=4 and R_(c)=0.05;

FIG. 10 is a graph of bite error rates BERs for un-punctured IRZH codes, with an information block length of 65536 and a maximum iteration number of 150, in the case of serial decoding in accordance with the invention;

FIG. 11 is a graph of BER performance of irregular RZH codes over BIAWGN channel, in the case of parallel decoding in accordance with the invention; and

FIG. 12 is a graph of BER performance of irregular RZH codes over BIAWGN channel, in the case of parallel decoding in accordance with the invention.

DETAILED DESCRIPTION

The inventive code design considers two decoding schemes, namely the turbo-like serial decoding and the LDPC-like parallel decoding. Parameters of an RZH code need to be chosen carefully for capacity-approaching performance, which leads to the irregular RZH (IRZH) code with optimized degree profile. The invention considers the design methods for IRZH codes. For turbo-like decoding, the extrinsic information transfer function (EXIT) chart technique can be employed to optimize the code profiles. EXIT functions characterize mutual information between the input and output of constituent decoders significantly facilitates performance analysis of iterative coding schemes. The design method for both decoding schemes is based on EXIT function/EXIT chart. One may always get the EXIT by Monte Carlo simulation for both decoding schemes. For parallel decoding, one obtains the EXIT function analytically, i.e., a mathematical formulation. With that one can calculate the EXIT value without using the simulation, which simplifies or reduces the complexity of the code design procedure significantly. Since in this case the inner decoder is a trellis-based zigzag-Hadamard (ZH) decoder, an analytical expression of its EXIT function is not available, and the inventive code design resorts to Monte Carlo simulations to obtain the EXIT functions of the inner code. For LDPC-like parallel decoding, the connection bits of the ZH code are treated as degree-2 variable nodes, and the inner constituent decoder becomes a Hadamard decoder, having the channel observations of the parity bits and the a priori probabilities about the information or connection bits as the input, and the extrinsic information for the information/connection bits as the output. EXIT functions with multiple inputs and outputs are difficult to obtain using Monte Carlo simulations. EXIT functions of Hadamard with multiple inputs and outputs in the context of low-rate RZH codes over BIAWGN channels are derived and applied to the analysis and design of RZH codes. With the EXIT functions, bit error rates (BERs) for a given communication code profile can be estimated and the differential evolution (DE) method can be employed to optimize the degree profile.

The structure of a systematic, repeat-zigzag-Hadamard RZH code is shown by the diagram 10 in FIG. 1. The RZH code is an alternative code structure to parallel concatenated ZH codes and turbo-Hadamard codes. An information bit block u of length k is fed out directly on a channel 14 and also encoded by an outer repetition encoder E₁ 11 of rate 1/d_(v) into a codeword b of length N=kd_(v), which is permuted by an interleaver Π, 12 of length N to form d, then encoded by an inner systematic recursive ZH encoder E₂, 13 and out on channel 15. Since the outer code is a repetition code and the inner ZH code is a systematic code, there are d_(v) repetitions in the resulting ZH codeword for every information bit. Since a repetition code has no coding gain, it is desirable to transmit the information bits only once. Also notice that the common bit of a ZH segment is the same as the last parity bit of the previous Hadamard segment and hence introduces a degree-2 repetition code. As a consequence, one can puncture the last parity bit and only transmit the common bit. After puncturing, the inner code is a punctured ZH code with which one can obtain the systematic RZH code as shown in FIG. 1, with the parity bits p being the output of the punctured ZH code. Let n be the length of the ultimate codeword c={u, p}, then the overall code is an (n,k) linear block code and the overall coding rate is given by $\begin{matrix} {{R_{c} = \frac{r}{{d_{v}\left( {2^{r} - r - 1} \right)} + r}},} & (1) \end{matrix}$ where r is the order of the Hadamard code for the inner encoder.

In case that the inner code has no puncturing, one can have the un-punctured RZH codes output on a single channel 22 whose structure 20 is shown in FIG. 2. For the un-punctured code, the overall code rate is given by R_(c)=R₁R₂, where R₁=1/d_(v) is the rate of the outer repetition code and R₂ is the rate of the inner ZH code 21. Since normally the first common bit of the ZH code is omitted, the overall rate of the un-punctured RZH code is given by $\begin{matrix} {R_{c} = {\frac{k}{{\left( \frac{{kd}_{v}}{r} \right)2^{r}} - 1} = {\frac{r}{{d_{v}2^{r}} - {r/k}}.}}} & (2) \end{matrix}$ With k→∞, then $R_{c}->{\frac{r}{d_{v}2^{r}}.}$ When the coding rate is very low, e.g., R_(c)≦0.01, the performance difference between the punctured one and the un-punctured code is relatively small; whereas in the range around R_(c)=0.05, the punctured code offers a significant coding gain over the un-punctured one due to the elimination of the repetition bits embedded in the inner ZH codes.

A RZH code can be represented by its Tanner graph 30, as shown in FIG. 3, there are three sets of nodes in the Tanner graph of a RZH code: the variable nodes of information bits, corresponding to u, the variable nodes of common bits, corresponding to q, and the Hadamard check nodes, corresponding to the Hadamard code constraints. Note that in FIG. 3, the parity bits of Hadamard code words are embedded in their Hadamard check nodes. Those information bits that are repeated d_(v) times are represented by information bit variable nodes with degree d_(v), since they participate in d_(v) Hadamard code constraints, and the common bit variable notes can be viewed as degree-2 information bit variable nodes. Each Hadamard check node is connected to r information bit nodes and to two common bit nodes. The connections between Hadamard check nodes and information bit nodes are determined by the edge interleaver and are highly randomized, whereas the connections between Hadamard check nodes and common bit nodes are arranged in a highly-structured zigzag pattern.

Based on the Tanner graph, iterative decoding algorithms can be derived. Two belief-propagation (BP) based decoding schemes for RZH codes can be employed. The turbo-like serial decoding 40 depicted in FIG. 4 and the LDPC-like parallel decoding 50 depicted in FIG. 5. Both decoding schemes entail outer repetition decoders 44 and inner serial decoder 41, 51 or a Hadamard decoder 51 with interleavers Π⁻¹ 42 and Π 43. Output from the repetition decoders is sent to a decision block 45, tied to the sink output 46. In general, the serial decoding takes less iteration number than the parallel one, whereas the latter enjoys the advantage of easy hardware implementation with parallel processing. There is no fundamental difference in terms of bit error rate (BER) performance.

Design Methods for Turbo-Like Decoding

The code design of IRZH codes with serial decoding where the outer code is a mixture of repetition codes with different rates is considered. The design approach closely follows those described for RA codes and LDPC codes where the EXIT chart technique is utilized as a design tool. EXIT functions of the component codes and code ensemble optimization are examined.

EXIT Functions of the Component Codes

Considering EXIT functions of the component codes, for an (n, k) IRZH codes, the outer code consists of k repetition codes with variable rates. As shown in FIG. 3, suppose the rate of the ith repetition code is 1/d_(v) ^((i)), the degree of the ith variable node of information bit is d_(v) ^((i)). For the outer repetition codes, the EXIT curve is obtained in a similar manner as for RA codes and LDPC codes. Specifically, consider first un-punctured RZH codes. As discussed in Section 3, an information bit variable node of degree d_(v) has d_(v) incoming messages from the edge interleaver, and the decoder outputs are given by $\begin{matrix} {{{L_{rep}^{out}(i)} = {L_{ch} + {\sum\limits_{j \neq i}{L_{rep}^{in}(j)}}}},} & (3) \end{matrix}$ where L_(ch) is the LLR value about the information bit from the channel. For AWGN channel with noise variance ${\sigma^{2} = \frac{N_{0}}{2}},$ then $L_{ch} = \frac{2\quad x_{u}}{\sigma^{2}}$ where x_(u) is the channel observation of the binary phase shift keying (BPSK) modulated information bit u. L_(rep) ^(in)(j) is modeled as the output LLR of an AWGN channel whose input is the jth interleaver bit transmitted using BPSK. The EXIT function of a degree-d_(v) variable node is then I _(E,VND)(I _(A,VND) ,d _(v))=J(√{square root over ((d _(v)−1))}J ⁻¹(I _(,AVND)))  (4) where ${J(\sigma)}\overset{\bullet}{=}{1 - {\frac{1}{\sqrt{2\quad\pi\quad\sigma^{2}}}{\int_{- \infty}^{\infty}{{\mathbb{e}}^{- \frac{{({\zeta - {\sigma^{2}/2}})}^{2}}{2\quad\sigma^{2}}}{\log_{2}\left\lbrack {1 + {\mathbb{e}}^{- \zeta}} \right\rbrack}{{\mathbb{d}\zeta}.}}}}}$ Since J(σ) is a monotonically increasing function of σ, it is invertible.

Given the Hadamard code order r, the IRZH design involves specifying the variable node degrees d_(v) ^((i)), i=1, 2, . . . , k. Let D be the number of different variable node degrees, and denote these degrees by d_(v,i), i=1, 2, . . . , D. Then the degree profile of a code can be specified by a polynomial ${f(x)} = {\sum\limits_{i = 1}^{D}{a_{i}x^{d_{v,i}}}}$ where a_(i)≧0 is the fraction of nodes having degree d_(v,i). Note that {a_(i)} must satisfy ${\sum\limits_{i}a_{i}} = 1.$ The average variable node degree is then given by ${\overset{\_}{d}}_{v} = {\sum\limits_{i = 1}^{D}{a_{i} \cdot {d_{v,i}.}}}$ Since for $\left. k\rightarrow\infty \right.,{R_{c} = \frac{r}{{\overset{\_}{d}}_{v}2^{r}}},$ then ${\overset{\_}{d}}_{v} = {\frac{r}{R_{c}2^{r}}.}$ Let b_(i) be the fraction of edges incident to variable nodes of degree d_(v,i). There are (ka_(i))d_(v,i) edges involved with such nodes, so then $\begin{matrix} {b_{i} = {\frac{{ka}_{i}d_{v,i}}{k{\overset{\_}{d}}_{v}} = {\frac{d_{v,i}}{{\overset{\_}{d}}_{v}} \cdot {a_{i}.}}}} & (7) \end{matrix}$ Note that {b_(i)} must satisfy ${\sum\limits_{i}^{\quad}\quad b_{i}} = 1.$ It has been shown that the EXIT function of a mixture of codes is an average of the component EXIT functions. With (4), (6) and (7), the effective transfer function of the outer mixture codes is thus given by $\begin{matrix} {I_{E,{VND}} = {{g\left( {I_{A,{VND}},R_{c},r} \right)}\quad(8)}} \\ {\quad{= {\sum\limits_{i = 1}^{D}\quad{{b_{i} \cdot {I_{E,{VND}}\left( {I_{A,{VND}},d_{v,i}} \right)}}\quad(9)}}}} \\ {\quad{= {\frac{R_{c}2^{r}}{r}{\sum\limits_{i = 1}^{D}{d_{v,i} \cdot a_{i} \cdot {{I_{E,{VND}}\left( {I_{A,{VND}},d_{v,i}} \right)}.\quad(10)}}}}}} \end{matrix}$ Since g(·) is a monotonically increasing function of I_(A,VND), it is invertible and then I_(A,VND)=g⁻¹(I_(E,VND),R_(c),r).

For systematic RZH codes, an information bit variable node of degree d_(v) has d_(v)+1 incoming messages: d_(v) from the edge interleaver and one from the channel. The decoder outputs are given by (3). Then the EXIT function of a degree-d_(v) variable node is given by $\begin{matrix} {{I_{E,{VND}}\left( {I_{A,{VND}},d_{v},\frac{E_{s}}{N_{0}}} \right)} = {J\left( \sqrt{{\left( {d_{v} - 1} \right)\left\lbrack {J^{- 1}\left( I_{A,{VND}} \right)} \right\rbrack}^{2} + \sigma_{ch}^{2}} \right)}} & (11) \end{matrix}$ where ${\sigma_{ch}^{2} = {\frac{4}{\sigma^{2}} = {8 \cdot \frac{E_{s}}{N_{0}}}}},{{{with}\quad\frac{E_{s}}{N_{0}}} = {R_{c} \cdot \frac{E_{b}}{N_{0}}}}$ being the symbol SNR. For systematic RZH codes, then ${R_{c} = \frac{r}{{{\overset{\_}{d}}_{v}\left( {2^{r} - r - 1} \right)} + r}},$ hence $\begin{matrix} {{\overset{\_}{d}}_{v} = {\frac{r}{{2^{r} - r - 1}\quad}{\left( {\frac{1}{R_{c}} - 1} \right).}}} & (12) \end{matrix}$ Then with (7), (11) and (12), one can have the effective transfer function of the outer mixture codes as follows $\begin{matrix} {I_{E,{VND}} = {g\left( {I_{A,{VND}},\frac{E_{s}}{N_{0}},R_{c},r} \right)}} & (13) \end{matrix}$ $\begin{matrix} {= {\sum\limits_{i = 1}^{D}\quad{b_{i} \cdot {I_{E,{VND}}\left( {I_{A,{VND}},d_{v,i},\frac{E_{s}}{N_{0}}} \right)}}}} & (14) \\ {= {{\frac{2^{r} - r - 1}{r} \cdot \frac{R_{c}}{1 - R_{c}}}{\sum\limits_{i = 1}^{D}\quad{d_{v,i} \cdot a_{i} \cdot {{I_{E,{VND}}\left( {I_{A,{VND}},d_{v,i},\frac{E_{s}}{N_{0}}} \right)}.}}}}} & (15) \end{matrix}$ Again, g(·) is invertible, and one can have $I_{A,{VND}} = {{g^{- 1}\left( {I_{E,{VND}},\frac{E_{s}}{N_{0}},R_{c},r} \right)}.}$ In order to perform code ensemble optimization, the EXIT transfer function of the inner ZH decoder is needed. In general, there is no closed-form formula, hence the EXIT function is computed by simulation and denoted it by $\begin{matrix} {I_{E,{ZH}} = {{h\left( {{I_{A,{ZH}}.\frac{E_{s}}{N_{0}}},r} \right)}.}} & (16) \end{matrix}$ Code Ensemble Optimization

In the case of code ensemble optimization, for given r and $\frac{E_{s}}{N_{0}},$ the optimal IRZH ensemble parameters {a_(i)} that maximize R_(c) subject to vanishing BER ${P_{b}\left( \frac{E_{s}}{N_{0}} \right)},$ are solution of the following optimization problem $\begin{matrix} {{{\max\quad R_{c}{s.t.{\sum\limits_{i}^{\quad}\quad a_{i}}}} = 1},{a_{i} \geq 0},{{\forall{i\quad{and}\quad{P_{b}\left( \frac{E_{s}}{N_{0}} \right)}}} = 0.}} & (17) \end{matrix}$ EXIT charts can be used to analyze the convergence properties of RA codes and LDPC codes. The same principle can be applied to RZH codes. Specifically, if there is an open tunnel between the EXIT functions of the inner code and outer code for given r and $\frac{E_{s}}{N_{0}},$ the iterative decoding algorithm can asymptotically converge and then ${P_{b}\left( \frac{E_{s}}{N_{0}} \right)} = 0$ with a sufficient large number of iteration. Mathematically, the convergence condition is given by $\begin{matrix} {{{h\left( {I_{A,{ZH}},\frac{E_{s}}{N_{0}},r} \right)} > {g^{- 1}\left( {I_{A,{ZH}},R_{c},r} \right)}},{{{for}\quad I_{A,{ZH}}} \in \left\lbrack {0,1} \right)},} & (18) \end{matrix}$ for un-punctured RZH codes, and $\begin{matrix} {{{h\left( {I_{A,{ZH}},\frac{E_{s}}{N_{0}},r} \right)} > {g^{- 1}\left( {I_{A,{ZH}},\frac{E_{s}}{N_{0}},R_{c},r} \right)}},{{{for}{\quad\quad}I_{A,{ZH}}} \in \left\lbrack {0,1} \right)},} & (19) \end{matrix}$ for systematic codes. With the help of the EXIT chart analysis, one can simplify the above optimization problem by replacing the constraint ${P_{b}\left( \frac{E_{s}}{N_{0}} \right)} = 0$ in (17) with condition (18) or (19). To design an IRZH code for a particular rate R_(c), we simply choose proper Hadamard degree and change $\frac{E_{s}}{N_{0}}$ in (17) until the resulting optimization result R_(c)*=R_(c). Design Method for LDPC-Like Decoding

The design approach for IRZH codes with parallel decoding closely follows that for irregular LDPC codes using the deferential evolution (DE) technique. During the optimization, the BER for a given code profile has to be estimated, which can be done through mutual information evolution. The mutual information transfer function for the outer repetition code is similar to the case for serial decoding. Hence, obtaining the EXIT functions for Hadamard codes is needed.

EXIT Functions Hadamard Components

The EXIT functions for Hadamard codes with multiple inputs on BIAWGN channels are considered. Since it is difficult to directly compute the EXIT functions of the output from the MAP decoder, use is made of a pMAP decoder to derive an approximation for the extrinsic mutual information over binary-input additive white Gaussian noise BIAWGN channels. Basic properties of BIAWGN channel are introduced and the pMAP decoder, with which an approximate expression for the EXIT function over BIAWGN for general linear block codes and Hadamard codes is derived.

Properties of BIAWGN Channels

First the BIAWGN channel, its LLR and “soft bit” outputs are characterized. A BIAWGN channel is characterized by its variance σ² . Let Y denote the BIAWGN channel observation for a transmitted BPSK modulated bit X, and let ${L{\log\frac{\Pr\left( {X = {{+ 1}❘Y}} \right)}{\Pr\left( {X = {{- 1}❘Y}} \right)}}},{T\overset{\bullet}{=}{{\Pr\left( {X = {{+ 1}❘Y}} \right)} - {\Pr\left( {X = {{- 1}❘Y}} \right)}}}$ denote the LLR and “soft bit” estimation of X based on the channel observation Y respectively. For a BIAWGN channel one can have $L = {{\frac{2Y}{\sigma^{2}}\quad{and}\quad T} = {{\tanh\left( \frac{L}{2} \right)}.}}$ Suppose that +1 is transmitted, then (L|X=+1)

N(m, 2m), where $m = {\frac{2}{\sigma^{2}}.}$ Hence (T|X=+1) has the following pdf $\begin{matrix} {{{f_{{T❘X} = {+ 1}}(t)} = {\frac{2}{1 - t^{2}}{f_{L}\left( {\ln\frac{1 + t}{1 - t}} \right)}}},} & (20) \end{matrix}$ where f_(L) denotes the pdf of (L|X=+1). With (20), the (2i)-th moment of (T|X=+1) as a function of m is given by $\begin{matrix} \begin{matrix} {{\Phi_{i}(m)}E\left\{ {{T^{2i}❘X} = {+ 1}} \right\}} \\ {= {\int_{- 1}^{+ 1}{\frac{2t^{2i}}{\left( {1 - t^{2}} \right)\sqrt{4\pi\quad m}}{\exp\left( {- \frac{\left( {{\ln\frac{1 + t}{1 - t}} - m} \right)^{2}}{4m}} \right)}\quad{{\mathbb{d}t}.}}}} \end{matrix} & (21) \end{matrix}$ The mutual information between X and L as a function of m is given by [?] $\begin{matrix} \begin{matrix} {{W(m)}{I\left( {X;L} \right)}} \\ {{\int_{R}^{\quad}{\frac{1}{\sqrt{4\pi\quad m}}{\exp\left( {- \frac{\left( {\ell - m} \right)^{2}}{4m}} \right)}\quad\left( {1 - {\log_{2}\left( {1 + {\mathbb{e}}^{- \ell}} \right)}} \right){\mathbb{d}\ell}}},} \end{matrix} & (22) \end{matrix}$ which is invertible and hence has m=W⁻¹(I). MAP and pMAP Decoders

Now, turning to the output of the MAP decoder and the pMAP decoder. Given an (n,k) linear block code C over GF(2), the dual code C^(⊥) is an (n,n−k) linear block code. Let c _(j) ^(⊥)=[c_(j,1) ^(⊥),c_(j,2) ^(⊥), . . . ,c_(j,n) ^(⊥)]^(T) denote the j-th codeword of the (n,n−k) dual code. Denote by I_(i,1) ^(⊥)={j|c_(j,i) ^(⊥)=1} the set of indices of all codewords in the dual code with the i-th bit being 1 (or the set of indices of all parity-checks that the i-th bit participates in), and I_(i,0) ^(⊥)={j|c_(j,i)=0} the set of indices of all codewords in the dual code with the i-th bit being 0.

The extrinsic MAP decoding can be implemented by using the dual code as follows $\begin{matrix} \begin{matrix} {{T_{{EMAP},i}{\Pr\left( {X_{i} = {1❘{\underset{\_}{Y}}_{\lbrack i\rbrack}}} \right)}} - {\Pr\left( {X_{i} = {{- 1}❘{\underset{\_}{Y}}_{\lbrack i\rbrack}}} \right)}} \\ {= {\frac{\sum\limits_{j \in I_{i,1}^{\bot}}^{\quad}\quad{\prod\limits_{{\ell = 1},{\ell \neq i}}^{n}\quad T_{\ell}^{c_{j,\ell}^{\bot}}}}{\sum\limits_{j \in I_{j,0}^{\bot}}^{\quad}\quad{\prod\limits_{{\ell = 1},{\ell \neq j}}^{n}\quad T_{\ell}^{c_{j,\ell}^{\bot}}}}.}} \end{matrix} & (23) \end{matrix}$ Let D_(EMAP,i) be the extrinsic output of MAP decoder (23) after the following modification $\begin{matrix} \begin{matrix} {{D_{{EMAP},i}1} + T_{{EMAP},i}} \\ {= {2{\Pr\left( {X_{i} = {1❘{\underset{\_}{Y}}_{\lbrack i\rbrack}}} \right)}}} \\ {= {1 + {\frac{\sum\limits_{j \in I_{i,1}^{\bot}}^{\quad}\quad{\prod\limits_{{\ell = 1},{\ell \neq j}}^{n}\quad T_{\ell}^{c_{{j,\ell}\quad}^{\bot}}}}{\sum\limits_{j \in I_{j,0}^{\bot}}^{\quad}\quad{\prod\limits_{{\ell = 1},{\ell \neq i}}^{n}\quad T_{\ell}^{c_{j,\ell}^{\bot}}}}.}}} \end{matrix} & (24) \end{matrix}$ The extrinsic output of a suboptimal decoder which one can call pMAP decoder [?] is defined as $\begin{matrix} {{D_{\quad{{EpMAP},\quad i}}\overset{\bullet}{=}{\prod\limits_{{{S\varepsilon P}{(I_{i,1}^{\bot})}}\backslash\phi}\left( {1 + {\prod\limits_{{\ell = 1},{\ell \neq i}}^{n}\quad T_{\ell}^{\bigvee_{{j\varepsilon S}^{(c_{j,\ell}^{\bot})}}}}} \right)^{{({- 1})}^{{S} + 1}}}},} & (25) \end{matrix}$ where P(I_(i,1) ^(⊥)) denotes the set of all subsets of I_(i,1) ^(⊥) and “

” denotes logical “or” operation. In what follows, the pMAP decoder is employed to obtain an approximate expression for the EXIT functions of linear block codes over a BIAWGN channel. Since the basic idea is to decompose the EXIT function in the form of a series EXIT functions of multiple single parity-check codes, we will start from the EXIT function of single parity-check codes. EXIT Functions for General Linear Block Codes

Note that the goal is to find the extrinsic functions for different bits given that the a priori mutual information from the extrinsic and the communication channels for different bits is different. Keeping this in mind, we first compute the extrinsic information at the output of a single parity-check code.

Theorem 4.1.

The extrinsic information of the i-th bit at the output of MAP decoder of an (n,n−1) single parity-check code is given by: $\begin{matrix} {I_{E,i} = {{I\left( {X_{i};T_{{EMAP},i}} \right)} = {\frac{1}{\ln\quad 2}{\sum\limits_{j = 1}^{\infty}\quad{\frac{1}{\left( {2\quad j} \right)\left( {{2\quad j} - 1} \right)}{\left( {\prod\limits_{{\ell = 1},{\ell \neq i}}^{n}\quad{E\left\{ T_{\ell}^{2j} \right\}}} \right) \cdot}}}}}} & (26) \end{matrix}$

Proof:

The dual code of the (n,n−1) single parity-check code is the repetition code of length n. Hence from (23) it follows that ${T_{{EMAP},i} = {\prod\limits_{{\ell = 1},{\ell \neq i}}^{n}T_{\ell}}},$ then using a known proposition 2.6, the extrinsic mutual information of the i-th bit at the output of MAP decoder is given by $\quad\begin{matrix} {{I\left( {X_{i};T_{{EMAP},\quad i}} \right)}\quad = \quad{E_{\quad{T_{{EMAP},\quad i}|{\underset{\_}{c}}_{0}}}\quad\left\{ {\log_{2}\left( {1\quad + \quad T_{{EMAP},\quad i}} \right)} \right\}}} \\ {\quad{= \quad{E_{T_{{EMAP},i}|{\underset{\_}{c}}_{0}}\quad\left\{ \quad{\log_{\quad 2}\left( {1\quad + {\prod\limits_{{\ell = 1},\quad{\ell\quad \neq \quad i}}^{\quad n}\quad T_{\ell}}} \right)} \right\}}}} \\ {= {\frac{1}{\quad{\ln\quad 2}}\quad{\sum\limits_{\quad{j = 1}}^{\infty}\quad{\frac{1}{\left( {2\quad j} \right)\quad\left( {{2\quad j}\quad - \quad 1} \right)}\quad E\left\{ \quad{\prod\limits_{{\ell = 1},\quad{\ell \neq i}}^{\quad n}\quad T_{\ell}^{2j}} \right\}}}}} \\ {\quad{{= \quad{\frac{1}{\quad{\ln\quad 2}}\quad{\sum\limits_{j = 1}^{\infty}\quad{\frac{1}{\left( {2\quad j} \right)\quad\left( {{2\quad j} - 1} \right)}\quad\left( \quad{\prod\limits_{{\ell = 1},\quad{\ell \neq j}}^{\quad n}\quad{E\quad\left\{ \quad T_{\ell}^{2\quad j} \right\}}} \right)}}}},}\quad} \end{matrix}$ where the last equality holds since the channel is assumed to be memoryless. For the single parity-check codes, pMAP and MAP decoders are identical in any memoryless channel, and the Conjecture 4.1 also states that for other high rate codes, D_(EMAP)≅D_(EpMAP) when the all-zero codeword is transmitted over the BIAWGN channel. We have the following result.

Theorem 4.2.

Let C be an (n,k) linear block code such that in BIAWGN channel D_(EMAP)=D_(EpMAP). Then the mutual information between X_(i) and T_(EMAP,i) is given by $\begin{matrix} {{I_{E,i}^{BIAWGN} = {\frac{1}{\ln\quad 2}{\sum\limits_{{{S\varepsilon P}{(I_{i,1}^{\bot})}}\backslash\phi}\quad{\left( {- 1} \right)^{{S} + 1}{\sum\limits_{j = 1}^{\infty}\quad{\frac{1}{\left( {2j} \right)\left( {{2\quad j} - 1} \right)}\left( {\prod\limits_{{{\ell\varepsilon}\quad{V{(S)}}},{\ell \neq i}}\quad{\Phi_{j}\left( m_{\ell} \right)}} \right)}}}}}},} & (28) \end{matrix}$ where V(S)={l∈{1, . . . ,n}|

_(j∈S)c_(j,l) ^(⊥)−1}, and m_(l)=W⁻¹(I_(A,l)) where I_(A,l) is the a priori mutual information about X_(l) from the channel given X_(l)=+1 is transmitted.

Proof:

According to a known Theorem and (24), we have $\begin{matrix} {I_{E_{i}}^{BIAWGN} = {I\left( {X_{i};T_{{EMAP},i}} \right)}} \\ {= {E_{T_{{EMAP},i}|{\underset{\_}{c}}_{0}}\left\{ {\log_{2}\left( {1 + T_{{EMAP},i}} \right)} \right\}}} \\ {= {E_{T_{{EMAP},i}|{\underset{\_}{c}}_{0}}{\left\{ {\log_{2}\left( D_{{EMAP},i} \right)} \right\}.}}} \end{matrix}$ Since D_(EMAP)=D_(EpMAP), we further have $\begin{matrix} {I_{E_{i}}^{BIAWGN} = {E_{T_{{EMAP},i}|{\underset{\_}{c}}_{0}}\left\{ {\log_{2}\left( D_{{EpMAP},i} \right)} \right\}}} \\ {= {E_{\underset{\_}{T}|{\underset{\_}{c}}_{0}}\left\{ {\log_{2}\left( {\prod\limits_{S\quad\varepsilon\quad{{P{(I_{i,1}^{\bot})}}\backslash\phi}}\quad\left( {1 + {\prod\limits_{{\ell = 1},\quad{\ell \neq i}}^{\quad n}T_{\ell}^{\quad_{\bigvee_{{j\varepsilon S}^{(\quad c_{j,\ell}^{\bot})}}}}}} \right)^{{({- 1})}^{S|{+ 1}}}} \right)} \right\}}} \\ {= {E_{\underset{\_}{T}|{\underset{\_}{c}}_{0}}\left\{ {\sum\limits_{{{S\varepsilon P}{(I_{i,1}^{\bot})}}\backslash\phi}{\left( {- 1} \right)^{{S} + 1}{\log_{2}\left( {1 + {\prod\limits_{{\ell = 1},\quad{\ell \neq i}}^{\quad n}T_{\ell}^{\bigvee_{{j\varepsilon S}^{(c_{j,\ell}^{\bot})}}}}} \right)}}} \right\}}} \end{matrix}$ $\begin{matrix} {= {\sum\limits_{{{S\varepsilon P}{(I_{i,1}^{\bot})}}\backslash\phi}{\left( {- 1} \right)^{S|{+ 1}}E_{\underset{\_}{T}|{\underset{\_}{c}}_{0}}{\left\{ {\log_{2}\left( {1 + {\prod\limits_{{\ell = 1},\quad{\ell \neq i}}^{\quad n}{T_{\ell}}^{\bigvee_{{j\varepsilon S}{(c_{j,\ell}^{\bot})}}}}} \right)} \right\}.}}}} & (29) \end{matrix}$ Define V(S)={l∈{1, . . . ,n}|

_(j∈S)c_(j,l) ^(⊥)=1}, then the E{·} term in (29) is the extrinsic information of a (|V(S)|,|V(S)|−1) single parity-check code. Since all-zero codeword is transmitted, according to Theorem 4.5, we have ${{E_{\underset{\_}{T}|{\underset{\_}{c}}_{0}}\left\{ {\log_{2}\left( {1 + {\prod\limits_{{\ell = 1},\quad{\ell \neq i}}^{\quad n}{T_{\ell}}^{\bigvee_{{j\varepsilon S}{(c_{j,\ell}^{\bot})}}}}} \right)} \right\}} = {\frac{1}{\ln\quad 2}{\sum\limits_{j = 1}^{\infty}\quad{\frac{1}{\left( {2j} \right)\left( {{2j} - 1} \right)}\left( {\prod\limits_{{{\ell\varepsilon}\quad{V{(S)}}},{\ell \neq \quad i}}\quad{E\left\{ {\left. T_{\ell}^{2\quad j} \middle| X_{\ell} \right. = {+ 1}} \right\}}} \right)}}}},$ with which (29) becomes $\begin{matrix} {I_{E,i}^{BIAWGN} = {\sum\limits_{{{S\varepsilon P}{(I_{i,1}^{\bot})}}\backslash\phi}{\left( {- 1} \right)^{{S} + 1}\quad\frac{1}{\ln\quad 2}{\sum\limits_{j = 1}^{\infty}\frac{1}{\left( {2j} \right)\left( {{2j} - 1} \right)}}}}} \\ {\left( {\prod\limits_{{{\ell\varepsilon}\quad{V{(S)}}},{\ell \neq i}}{E\left\{ {\left. T_{\ell}^{2j} \middle| X_{\ell} \right. = {+ 1}} \right\}}} \right)} \\ {= {\frac{1}{\ln\quad 2}{\sum\limits_{{{S\varepsilon P}{(I_{i,1}^{\bot})}}\backslash\phi}{\left( {- 1} \right)^{{S} + 1}{\sum\limits_{j = 1}^{\infty}\frac{1}{\left( {2j} \right)\left( {{2j} - 1} \right)}}}}}} \\ {\left( {\prod\limits_{{{\ell\varepsilon}\quad{V{(S)}}},{\ell \neq 1}}{\Phi_{j}\left( m_{\ell} \right)}} \right),} \end{matrix}$ where m_(l) is the mean of the “soft bit” estimation passed from the channel to the MAP decoder for X_(l) given that X=+1 is transmitted. Note that such a BIAWGN channel can either be a communication channel or an extrinsic channel. It is also noted that the EXIT functions in the form of multiple EXIT functions of the same code in BEC channel, cannot be expanded.

For high rate codes, we have D_(EMP)≅D_(EpMAP) when the all-zero codeword is transmitted over the BIAWGN channel, and Theorem 4.2 can be used to approximately compute the extrinsic information at the output of the MAP decoder for a linear block code. Note that Hadamard codes are low rate codes. For a low rate code, the extrinsic information can be approximated by I _(E,i) ^(BIAWGN)(I _(A,1) , . . . ,I _(A,n))≅1−I _(E,i) ^(⊥,BIAWGN)(1−I _(A,1), . . . ,1−I _(A,n)),  (30) where I_(E,i) ^(⊥,BIAWGN)(1−I_(A,1), . . . ,1−I_(A,n)) is the extrinsic information of its high-rate dual code and can be computed by Theorem 4.2 with m_(l)=W⁻¹(1−I_(A,l)). EXIT Functions for Hadamard Codes over BIAWGN Channel

Next we consider the EXIT functions of Hadamard codes in the context of RZH codes with parallel decoding. We first consider the average mutual information about the information bits d which is given by ${I_{E,d}^{BIAWGN} = {\frac{1}{r}{\sum\limits_{i = 1}^{r}I_{E,d_{i}}^{BIAWGN}}}},$ Where I_(E,d) _(i) ^(BIAWGN) can be computed by (30).

Let c _(j)=[c_(j,1),c_(j,2), . . . ,c_(j,n)]^(T) denote the j-th codeword of the Hadamard code over GF(2). For c _(j), we have c_(j,2) _(i−1) ₊₁=d_(j,i) for i=1, . . . ,r. Denote by I_(i,1) ^(H,d)={j|c_(j,2) _(i−1) ₊₁=1}, for i=1, . . . ,r, the set of indices of all Hadamard codewords with the i-th systematic bit equal 1, and P(I_(i,1) ^(H,d)) the set of all subsets of I_(i,1) ^(H,d). Since a Hadamard codeword can be divided into systematic bits, parity bits and connection bits, we have c _(j)={d _(j),p _(j,[m]),q_(j),p_(j,m)} where p _(j,[m]) denotes the parity bits exclusive of p_(j,m). Let S∈P(I_(i,1) ^(H,d)) . The following definitions will be used: $\begin{matrix} {{V\left( {S,\underset{\_}{d}} \right)}\overset{\bullet}{=}\left\{ {{{\ell \in \left\{ {1,\ldots\quad,r} \right\}}❘{\bigvee_{j \in S}d_{j,\ell}}} = 1} \right\}} & (31) \\ {{V\left( {S,{\underset{\_}{p}}_{\lbrack m\rbrack}} \right)}\overset{\bullet}{=}\left\{ {{{\ell \in \left\{ {1,\ldots\quad,{m - 1}} \right\}}❘{\bigvee_{j \in S}p_{j,\ell}}} = 1} \right\}} & (32) \\ {{V\left( {S,q} \right)}\overset{\bullet}{=}\left\{ {{{\ell \in \left\{ 1 \right\}}❘{\bigvee_{j \in S}q_{j,\ell}}} = 1} \right\}} & (33) \\ {{V\left( {S,p_{m}} \right)}\overset{\bullet}{=}\left\{ {{{\ell \in \left\{ m \right\}}❘{\bigvee_{j \in S}p_{j,\ell}}} = 1} \right\}} & (34) \end{matrix}$ where “

” is the logical “or” operation. It is clear that V(S,q) is either {1} or φ. Further define $\begin{matrix} {A_{g,h,j,k}^{d_{i},{odd}}\overset{\bullet}{=}{{\left\{ {S \in {P\left( I_{i,1}^{H,d} \right)}} \right.{{V\left( {S,q} \right)}}}}} \\ {{= g},{{V\left( {S,\underset{\_}{d}} \right)}}} \\ {{= h},{{V\left( {S,{\underset{\_}{p}}_{\lbrack m\rbrack}} \right)}}} \\ {{= j},{{V\left( {S,p_{m}} \right)}}} \\ {\left. {{= k},{{S}\quad{is}\quad{odd}}} \right\} } \end{matrix}$ and $\begin{matrix} {A_{g,h,j,k}^{d_{i},{odd}}\overset{\bullet}{=}{{\left\{ {S \in {P\left( I_{i,1}^{H,d} \right)}} \right.{{V\left( {S,q} \right)}}}}} \\ {{= g},{{V\left( {S,\underset{\_}{d}} \right)}}} \\ {{= h},{{V\left( {S,{\underset{\_}{p}}_{\lbrack m\rbrack}} \right)}}} \\ {{= j},{{V\left( {S,p_{m}} \right)}}} \\ {{\left. {{= k},{{S}\quad{is}\quad{even}}} \right\} }.} \end{matrix}$ Then we have the following results for Hadamard codes that will be subsequently used:

Lemma 4.1.

For Hadamard codes C with order r, we have ${A_{g,h,j,k}^{d_{1},{odd}} = {A_{g,h,j,k}^{d_{2},{odd}} = {\cdots = {A_{g,h,j,k}^{d_{r},{odd}}\overset{\bullet}{=}A_{g,h,j,k}^{d,{odd}}}}}},{and}$ $A_{g,h,j,k}^{d_{1},{even}} = {A_{g,h,j,k}^{d_{2},{even}} = {\cdots = {A_{g,h,j,k}^{d_{r},{even}}\overset{\bullet}{=}{A_{g,h,j,k}^{d,{even}}.}}}}$

Proof:

Since A_(g,h,j,k) ^(d) ^(l) ^(,odd) and A_(g,h,j,k) ^(d,) ^(l) ^(even) are based on the subcode C_(i)={c _(j)|c_(j,2) _(i−1) ₊₁=1,c _(j)∈C}, i=1, . . . ,r, we only need to show that for l≠i, there is a C_(l)* which is constructed from C_(l) by only switching coded bits within the systematic bit positions and/or the parity bit positions, such that C_(i)=C₁*. Let the generation matrix of C in systematic form be G _(H,r) with g ₀ and g _(i) (i=1, . . . ,r) being the rows of G _(H,r) corresponding to the connection bit and the i-th information bit, respectively. Suppose that the input of the Hadamard encoder is d=[d₀=q,d₁, . . . ,d_(r)]^(T), then the codewords belong to C_(i) are given by $\left\{ {{\underset{\_}{g}}_{i}^{T} + {\sum\limits_{\ell \neq i}{d_{\ell}{\underset{\_}{g}}_{\ell}^{T}}}} \right\}$ for all possible {d_(l)}_(l≠i). Since G _(H,r) is in systematic form, g _(i) can be written as [u _(i),p _(i)] where u _(i)=[u₀,u₁, . . . ,u_(r)] with u_(l)=0 for l≠i and u_(i)=1. By switching the rows g _(i) and g _(l), we obtain G _(H,r) ⁽¹⁾ with g ⁽¹⁾=g _(l) and g _(l) ⁽¹⁾=g _(i). It is clear that the subcode C_(i) ⁽¹⁾ generated by G _(H,r) ⁽¹⁾ is identical to C_(i). We further construct G _(H,r) ⁽²⁾ from G _(H,r) ⁽¹⁾ by letting (g _(i) ⁽²⁾=g _(i) ⁽¹⁾+(g _(l) ⁽¹⁾+g _(i) ⁽¹⁾)=g _(l) ⁽¹⁾=g _(i), and g _(l) ⁽²⁾=g _(l) ⁽¹⁾+(g _(l) ⁽¹⁾+g _(i) ⁽¹⁾)=g _(i) ⁽¹⁾=g _(l), by which we have G _(H,r) ⁽²⁾=G _(H,r) ⁽¹⁾ and hence C_(i) ⁽²⁾=C_(i). The effect of transforming G _(H,r) ⁽¹⁾ to G _(H,r) ⁽²⁾ is only to change the order of the coded bits. Since both codes are systematic codes, there is one order change between systematic bit position i and l (note that there are only two l's in u _(i)+u _(l)), and all the other changes are happened between parity bit positions. It is clear that C_(i) ⁽²⁾=C_(i) is the ·C_(l)* we are looking for and this concludes the proof.

In case that the size of the code book is not huge, it is easy to compute A_(g,h,j,k) ^(d,even) and A_(g,h,j,k) ^(d,odd) directly from their definitions given the codewords are known. With the above results, the average mutual information about the information bits d can be computed by the following result.

Theorem 4.3.

If the extrinsic and communication channels are AWGN channels with respective mutual information I_(A,d), I_(A,p), I_(A,q) and I_(A,p) _(m) , we have $\begin{matrix} {I_{E,d}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}{\sum\limits_{g = 0}^{1}{\sum\limits_{h = 0}^{r}{\sum\limits_{j = 0}^{m - 1}{\sum\limits_{k = 0}^{1}{\begin{pmatrix} {A_{g,h,j,k}^{d,{odd}} -} \\ A_{g,h,j,k}^{d,{even}} \end{pmatrix}{\sum\limits_{i = 1}^{\infty}{\frac{1}{\left( {2\quad i} \right)\left( {{2i} - 1} \right)}.}}}}}}}}}} & \quad \\ {{{\Phi_{i}^{g}\left( m_{q} \right)}{\Phi_{i}^{h}\left( m_{d} \right)}{\Phi_{i}^{j}\left( m_{p} \right)}{\Phi_{i}^{k}\left( m_{p_{m}} \right)}},} & (35) \end{matrix}$ where m_(q)=W⁻¹(1−I_(A,q)), m_(d)=W⁻¹(1−I_(A,d)), m_(p)=W⁻¹(1−I_(A,p)) and M_(p) _(m) =W⁻¹(1−I_(A,P) _(m) ). Note that here for simplicity, I_(A,p) _(m) denotes the overall mutual information about p_(m) from both the communication channel and the extrinsic channel.

Proof:

Using Theorem 4.2, (30) and Theorem 4.1, we obtain the above result. Now consider the connection bit q. Similarly, we denote by I₁ ^(H,q)={j|c_(j,1)=1} the set of indices of all Hadamard codewords with the connection bit equal 1, and P(I₁ ^(H,q)) the set of all subsets of I₁ ^(H,q). Let S∈P(I₁ ^(H,q)), then we can obtain V(S,d), V(S,p _([m])), and V(S, p_(m)) as in (31), (32) and (34). Define $\begin{matrix} {A_{h,j,k}^{q,{odd}}\overset{\bullet}{=}{{\left\{ {S \in {P\left( I_{1}^{H,d} \right)}} \right.{{V\left( {S,\underset{\_}{d}} \right)}}}}} \\ {{= h},{{V\left( {S,{\underset{\_}{p}}_{\lbrack m\rbrack}} \right)}}} \\ {{= j},{{V\left( {S,p_{m}} \right)}}} \\ {\left. {{= k},{{S}\quad{is}\quad{odd}}} \right\} } \end{matrix}$ and $\begin{matrix} {A_{h,j,k}^{q,{odd}}\overset{\bullet}{=}{{\left\{ {S \in {P\left( I_{1}^{H,d} \right)}} \right.{{V\left( {S,\underset{\_}{d}} \right)}}}}} \\ {{= h},{{V\left( {S,{\underset{\_}{p}}_{\lbrack m\rbrack}} \right)}}} \\ {{= j},{{V\left( {S,p_{m}} \right)}}} \\ {{\left. {{= k},{{S}\quad{is}\quad{even}}} \right\} }.} \end{matrix}$ Then similar to Theorem 4.3, the mutual information of q can be computed by the following result.

Theorem 4.4.

If the extrinsic and communication channels are AWGN channels with respective mutual information I_(A,d), I_(A,p) and I_(A,p) _(m) , then we have $\begin{matrix} {{I_{E,q}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}{\sum\limits_{h = 0}^{r}{\sum\limits_{j = 0}^{m - 1}{\sum\limits_{k = 0}^{1}{\left( {A_{h,j,k}^{d,{odd}} - A_{h,j,k}^{d,{even}}} \right){\sum\limits_{i = 1}^{\infty}{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)}.{\Phi_{i}^{h}\left( m_{d} \right)}}{\Phi_{i}^{j}\left( m_{p} \right)}{\Phi_{i}^{k}\left( m_{p_{m}} \right)}}}}}}}}}},} & (36) \end{matrix}$ where m_(d)=W⁻¹(1−I_(A,d)), m_(p)=W⁻¹(1−I_(A,p)) and m_(p) _(m) =W⁻¹(1−I_(A,p) _(m) ). Again, here I_(A,p) _(m) represents the overall mutual information about p_(m) from both the communication channel and the extrinsic channel.

Now consider the last parity bit p_(m). Since _(p) _(m) has a channel observation y_(m), the EXIT function of the last parity bit p_(m) is different from that of q. Again, let C* be a new code formed by all pairs (d, p, q, p_(m)) , then we can define I₁ ^(H,p) ^(m) ={j|p_(j,m)=1} the set of indices of all codewords in C* with p_(j,m) equal 1, and P(I₁ ^(H,p) ^(m) ) the set of all subsets of I₁ ^(H,p) ^(m) . Let S∈P(I₁ ^(H,p) ^(m) ), then similar to the case for q, we can obtain V(S,q), V(S,d), and V(S,p), with which we can define $\begin{matrix} {A_{g,h,j}^{p_{m},{odd}}\overset{\bullet}{=}{{\left\{ {S \in {P\left( I_{1}^{H,p_{m}} \right)}} \right.{{V\left( {S,q} \right)}}}}} \\ {{= g},{{V\left( {S,\underset{\_}{d}} \right)}}} \\ {{= h},{{V\left( {S,\underset{\_}{p}} \right)}}} \\ {\left. {{= j},{{S}\quad{is}\quad{odd}}} \right\} } \end{matrix}$ and $\begin{matrix} {A_{g,h,j}^{p_{m},{odd}}\overset{\bullet}{=}{{\left\{ {S \in {P\left( I_{1}^{H,p_{m}} \right)}} \right.{{V\left( {S,q} \right)}}}}} \\ {{= g},{{V\left( {S,\underset{\_}{d}} \right)}}} \\ {{= h},{{V\left( {S,\underset{\_}{p}} \right)}}} \\ {{\left. {{= j},{{S}\quad{is}\quad{even}}} \right\} }.} \end{matrix}$ by which we can compute the EXIT function for p_(m) as follows.

Theorem 4.5.

If the extrinsic and communication channels are AWGN channels with respective mutual information I_(A,q), I_(A,d) and I_(A,p), then we have $\begin{matrix} {{I_{E,p_{m}}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}{\sum\limits_{g = 0}^{1}{\sum\limits_{h = 0}^{r}{\sum\limits_{j = 0}^{m}{\begin{pmatrix} {A_{g,h,j}^{p_{m},{odd}} -} \\ A_{g,h,j}^{p_{m},{even}} \end{pmatrix}{\sum\limits_{i = 1}^{\infty}{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)}.{\Phi_{i}^{g}\left( m_{q} \right)}}{\Phi_{i}^{h}\left( m_{d} \right)}{\Phi_{i}^{j}\left( m_{p} \right)}}}}}}}}}},} & (37) \end{matrix}$ where m_(q)=W⁻¹(1−I_(A,q)), m_(d)=W⁻¹(1−I_(A,d)) and m_(p)=W⁻¹(1−I_(A,p)).

Numerical Example

The following example demonstrates the computing of EXIT functions for Hadamard codes.

Example 1

Consider a Hadamard code with r=4. The code book of C can be easily obtained, from which we are able to obtain A_(g,h,j,k) ^(d,even) and A_(g,h,j,k) ^(d,odd). Let I_(A,p)=0.01, and I_(A,q)=I_(A,p) _(m) ,=I_(A,d), then the EXIT function of the information bits has only one variable I_(A,d), and we are able to obtain I_(E,d) as a function of I_(A,d) by using Theorem 4.3 which is plotted 600 in FIG. 6. Also depicted in FIG. 6 are the simulated EXIT curve with the same setting. It is seen that the EXIT function over BIAWGN channel provides an optimistic estimation of the simulated one.

BER Estimation of RZH Codes with Parallel Decoding

For an (n,k) IRZH codes, the outer code consists of k repetition codes with variable rates and the EXIT functions of repetition decoders are identical to the case where the serial decoding is employed. Also, since the connection bit nodes are viewed as variable nodes with degree 2, the corresponding EXIT functions for q and p_(m) are simply the EXIT functions for rate ½ repetition code without message from the channel. Now we have both the EXIT functions of the outer repetition decoder and the inner Hadamard decoder, we can then trace the mutual information exchanged between the two constituent components for a given degree profile and calculate the corresponding BER after a given number of iterations as in [?], with which we are able to perform degree profile optimization by using differential evolution (DE).

Specifically, let I_(ch) be the mutual information about the LLRs of the coded bits transmitted from the communication channel. For a BIAWGN channel with ${\frac{E_{s}}{N_{0}} = {R_{c} \cdot \frac{E_{b}}{N_{0}}}},{{{we}\quad{have}\quad I_{ch}} = {{W\left( {2\sigma_{ch}^{2}} \right)} = {{W\left( \frac{16E_{s}}{N_{0}} \right)}.}}}$ Also let I_(A,a) ^(H), I_(A,q) ^(H), I_(A,p) _(m) ^(H) be the mutual information about the a priori LLRs passing from the repetition decoder to the Hadamard decoder (the extrinsic channels) for the information bits, connection bit and the last parity bit, respectively, which are initialized to zero for the first iteration. With I_(ch), I_(A,a) ^(H), I_(A,q) ^(H) and I_(A,p) _(m) ^(H), as the inputs, we are able to compute the output mutual information I_(E,a) ^(H), I_(E,q) ^(H) and I_(E,p) _(m) ^(H) of the Hadamard decoder with the previously derived EXIT functions in BIAWGN channels. For BIAWGN channels, the mean of the “soft output” of the extrinsic channel is computed by m=W⁻¹(I_(A)). The output mutual information of the Hadamard decoder will then serve as the input I_(A,VND) for the EXIT functions of the corresponding repetition decoder, which will produce the corresponding I_(E,VND) and feed back to the EXIT functions of the Hadamard decoder as the new inputs for the next iteration. After a given number of iteration, the mutual information passed to the outer repetition decoder is I_(A,VND), then the BER is given by $\begin{matrix} {{P_{b} = {\sum\limits_{i = 1}^{D}\quad{a_{i}{Q\left( \sqrt{\frac{1}{2}{W\left( {\frac{1}{2}\left( {{2d_{v}{W^{- 1}\left( I_{A,{VND}} \right)}} + \sigma_{ch}^{2}} \right)} \right)}} \right)}}}},} & (38) \end{matrix}$ where ${Q(x)}\overset{\bullet}{=}{\frac{1}{\sqrt{2\pi}}{\int_{- \infty}^{x}{{\exp\left( {{- t^{2}}/2} \right)}\quad{{\mathbb{d}t}.}}}}$ Code Ensemble Optimization

For given r and R_(c), the optimal IRZH ensemble parameters {a_(i)} are the one that minimize E_(b)/N₀, subject to a vanishing BER P_(b). In practice, the vanishing BER condition is often replaced by a BER threshold ε for a given iteration number N_(it), i.e., P_(b)(N_(it))<ε, which leads to the following optimization problem $\begin{matrix} {{{\min\quad{E_{b}/N_{0}}\quad{s.t.{\sum\limits_{i}^{\quad}\quad a_{i}}}} = 1},{a_{i} \geq 0},{\forall{{i\quad{and}\quad{P_{b}\left( N_{it} \right)}} < {ɛ.}}}} & (39) \end{matrix}$ To solve (17) for irregular RZH codes with parallel decoding, we resort to the differential evolution (DE) algorithm, which is a powerful population-based genetic algorithm and was introduced for finding the optimal degree profile of the irregular LDPC codes. The essential idea behind DE is a self-organizing scheme to generate a trial parameter vector (which is {a_(i)} in our case) by adding the weighted difference between two population vectors of the current generation to a third vector which is the target vector. If the trial vector has a smaller cost value (which is P_(b) in our case and can be estimated by using the EXIT functions of the component codes as discussed in Section 1) than the target vector, it survives into the next generation of the evolution. After a given number of evolutions, the vector with the smallest cost value among the population of current generation is the optimized parameter vector. Note that although there is no mathematical convergence proof of DE, it is believed to be a simple and reliable global optimization method. To find the solution to (17) for given R_(c) and r, we first choose an E_(b)/N₀ and find a degree profile {a_(i)} using DE that satisfies the BER constraint ε. If at least one {a_(i)} exists, the E_(b)/N₀ is reduced and the procedure is repeated until no such a vector {a_(i)} exists. The smallest value of E_(b)/N₀ for which a power profile {a_(i)} satisfies the BER constraint is the desired minimum SNR and the corresponding {a_(i)} is the optimized degree profile. Numerical Results

The following are several examples for RZH code optimization with the previously proposed design methods.

Examples with Serial Decoding

An un-punctured regular RZH code with r=4 and d_(v)=14 which results in a coding rate of around 0.018. FIG. 7 plots the EXIT chart of this code, from which it can be seen that the corresponding SNR threshold is around −0.05 dB. Now consider the irregular code with d _(v)=14. With code ensemble optimization, we are able to obtain an irregular code at $\frac{E_{b}}{N_{0}} = {{- 0.98}\quad{dB}}$ where the degree profile polynomial is given by f(x)=0.323x³+0.175x⁸+0.026x²²+0.476x²³. The corresponding EXIT chart for $\frac{E_{b}}{N_{0}}$ −0.98 dB is also plotted 700 in FIG. 7, where the solid line denotes the EXIT function of the outer mixture repetition codes with the optimized profile and diamond denotes the EXIT function of the inner ZH code.

The graph 800 of FIG. 8 plots the simulated BER results of the regular and irregular un-punctured RZH codes with an information block length of 65536 and a maximum iteration number of 150. It is seen that with r=4, the optimized un-punctured IRZH code has a gain of 0.71 dB (measured at P_(b)=10⁻⁴) over the regular code, whereas the gap to the capacity is around 0.8 dB. With larger r, better codes can be obtained. For instance, for r=6, we obtain a code which is optimized at $\frac{E_{b}}{N_{0}} = {{- 1.30}\quad{dB}}$ with f(x)=0.363x³+0.338x⁶+0.299x⁷, and the simulated threshold (measured at P_(b)=10⁻⁴) is −1.13 dB, which is only 0.41 dB away from the capacity.

Next is the ensemble optimization of the systematic IRZH codes. Since the repetition bits are punctured, much better performance can be expected. Indeed, for r=4 and R_(c)=0.05, we are able to obtain an irregular code at $\frac{E_{b}}{N_{0}} = {{- 1.34}\quad{dB}}$ with f(x)=0.467x³+0.375x¹⁰+0.158x¹¹, which is only 0.1 dB away from the capacity. The EXIT chart of the curve-fitting result 900 is shown in FIG. 9 and the BER performance is shown 1001 in FIG. 10. Results show that the simulated SNR threshold is −1.14 dB (only around 0.31 dB away from the capacity) which is much better than that of the optimized un-punctured code with the same r and a much lower (0.0179) coding rate. The graph 1001 of FIG. 10 also depicts the BER performance of a lower rate code with r=4 and R_(c)=0.018 which is optimized at $\frac{E_{b}}{N_{0}} = {{- 1.42}\quad{dB}}$ with f(x)=0.364x³+0.014x¹¹+0.192x¹²+0.074x¹³+0.095x³⁶+0.136x³⁷+0.1087x³⁸+0.004x³⁹+0.013x²⁰⁰, and the simulated SNR threshold is around −1.2 dB, which is 0.34 dB away from the capacity and around 0.8 dB better than the same rate un-punctured code with r=6. With r=6, a code is optimized at $\frac{E_{b}}{N_{0}} = {{- 1.43}\quad{dB}}$ with f(x)=0.401x³+0.573x⁷+0.026x²⁰, and the simulated SNR threshold is −1.24 dB, which is slightly better than that of r=4.

Examples with Parallel Decoding

Next some design examples of IRZH codes with parallel decoding are provided. First the performance of the regular code with parallel decoding is considered. Consider a regular systematic RZH code with r=4 and d _(v)=7 which corresponds to a rate of 0.0494. The graph 110 of FIG. 11 depicts the simulated BER performance of this code. The simulated SNR threshold (measured at P_(b)=10⁻⁴) is around −0.66 dB which is 0.78 dB away from the Shannon capacity −1.44 dB. To obtain better performance, we resort to irregular codes. For the code design, we set the BER threshold ε=10⁻⁴. With AWGN EXIT function, we are able to optimize a code at −1.25 dB with f(x)=0.4353x³+0.0072x⁴+0.0016x⁵+0.0099x⁸+0.1759x⁹+0.1829x¹⁰+0.0800x¹¹+0.1071x¹², which is only 0.19 dB away from the capacity. The simulated SNR threshold for this code is −1.15 dB, which is only 0.29 dB away from the capacity and has a gain of 0.49 dB over the regular one. Next we provide another example of code design using EXIT functions over BIAWGN channel.

Example

By setting r=4 and d _(v)=8, the systematic RZH code has a rate of 0.0435. The Shannon limit for this code is −1.46 dB. Again, with EXIT functions over BIAWGN channel, we are able to optimize a code at −1.34 dB with f(x)=0.4044x³+0.0026x⁴+0.0048x⁵+0.0245x⁶+0.0453x⁸+0.0669x⁹+0.0296x¹⁰+0.0203x¹¹+0.0985x¹²+0.3030x¹³, which is only 0.12 dB away from the capacity. BER performance of this code is depicted 120 in FIG. 12. It is seen that the simulated SNR threshold for this code is −1.2 dB, which is only 0.26 dB away from the capacity and 0.4 dB away from the ultimate Shannon limit. It is seen that the proposed EXIT functions in AWGN channel are a good approximation in the considered rate region and can be served as a practical tool for the low-rate IRZH code design.

The method for code design for IRZH codes is detailed by flow chart 40A in FIG. 4A for serial decoding and flow chart 50A in FIG. 5A for parallel decoding. The method is a mutual-information-based code design for both the serial and parallel decoding schemes.

Design for Serial Decoding

The decoding of RZH code is based on its tanner graph 30 which is depicted in FIG. 3. For turbo-like serial decoding, the inner decoder utilizes the trellis structure of the zigzag-Hadamard code and the common bits participate in the two-way decoding of ZH codes. Extrinsic information about the information bits is exchanged between the inner ZH decoder and outer repetition decoder, see FIG. 4.

Chart 40A details the steps for IRZH code design for serial decoding. Step 1: a small signal to noise ratio Es/N₀ is initially chosen 42A. Step 2: for a given Hadamard order r and Es/N₀, the EXIT curve for ZH code is obtained by Monte Carlo simulation using serial decoding 43A. Step 3: with the obtained EXIT curve there is an attempt to find the optimal IRZH ensemble parameters {a_(i)} that maximize coding rate subject to vanishing BER by solving the following optimization problem ${{\max\quad R_{c}\quad{s.t.{\sum\limits_{i}\quad a_{i}}}} = 1},{a_{i} \geq 0},{{\forall{i\quad{and}\quad{P_{b}\left( {E_{s}/N_{0}} \right)}}} = 0.}$ This problem can be solved by any linear optimization program 44A. The vanishing BER condition can be implemented by checking the existence of a decoding tunnel between the EXIT curve of the ZH code obtained in step 2 and that of outer repetition codes. Namely, the curve defined by a particular degree profile lies below the EXIT curve of ZH code in the EXIT chart. Step 4: if the maximum rate obtained by step 3 is smaller than the target rate, the signal to noise ratio Es/N₀ is increased by a small amount and step 2 and 3 are repeated, until the obtained achievable rate equals to the target rate 45A. Design for Parallel Decoding

As in FIG. 3, depicting the Tanner graph 30 of RZH codes, for LDPC-like parallel decoding the variable nodes of common bits are viewed as degree-2 information bit nodes and extrinsic LLRs about information bits and common bits are parallel exchanged between the outer repetition decoder and inner Hadamard decoder.

Chart 50A details the steps for IRZH code design for parallel decoding. Step 1: a relatively large signal to noise ratio SNR E_(b)/N₀ is initially chosen 52A. Step 2: for a given Hadamard order r coding rate R_(c) and SNR, a degree profile that has minimum BER by using deferential evolution (DE) is found 53A. During the DE optimization, BER is computed, which can be done by a mutual information tracking scheme. EXIT functions of the Hadamard codes in AWGN channel are derived, with which the BER can be easily estimated 54A. Specifically, the EXIT functions for the information bits are given by: ${I_{E,d}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}{\sum\limits_{g = 0}^{1}\quad{\sum\limits_{h = 0}^{r}\quad{\sum\limits_{j = 0}^{m - 1}\quad{\sum\limits_{k = 0}^{1}\quad{\left( {A_{g,h,j,k}^{d,{odd}} - A_{g,h,j,k}^{d,{even}}} \right){\sum\limits_{i = 1}^{\infty}\quad{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)} \cdot {\Phi_{i}^{g}\left( m_{q} \right)}}{\Phi_{i}^{h}\left( m_{d} \right)}{\Phi_{i}^{j}\left( m_{p} \right)}{\Phi_{i}^{k}\left( m_{p_{m}} \right)}}}}}}}}}}},$ similarly, the EXIT function for the connection bits can be computed by ${I_{E,q}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}\quad{\sum\limits_{h = 0}^{r}\quad{\sum\limits_{j = 0}^{m - 1}\quad{\sum\limits_{k = 0}^{1}\quad{\left( {A_{h,j,k}^{d,{odd}} - A_{h,j,k}^{d,{even}}} \right){\sum\limits_{i = 1}^{\infty}\quad{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)} \cdot {\Phi_{i}^{h}\left( m_{d} \right)}}{\Phi_{i}^{j}\left( m_{p} \right)}{\Phi_{i}^{k}\left( m_{p_{m}} \right)}}}}}}}}}},$ and the EXIT function for the last parity bit is given by ${I_{E,p_{m}}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}{\sum\limits_{g = 0}^{1}\quad{\sum\limits_{h = 0}^{r}\quad{\sum\limits_{j = 0}^{m}\quad{\left( {A_{g,h,j}^{p_{m},{odd}} - A_{g,h,j}^{p_{m},{even}}} \right){\sum\limits_{i = 1}^{\infty}\quad{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)} \cdot {\Phi_{i}^{g}\left( m_{q} \right)}}{\Phi_{i}^{h}\left( m_{d} \right)}{\Phi_{i}^{j}\left( m_{p} \right)}}}}}}}}}},$ where the details of the variables in the above equations are explained elsewhere herein. Step 4: if the minimum BER obtained by step 2 is smaller than the target BER requirement, the signal to noise ratio SNR E_(b)/N₀ is reduced and step 2 is repeated, until the target BER requirement cannot be achieved 55A. The least SNR that can still achieve the BER requirement is the minimum SNR and the corresponding degree profile is the optimized degree profile.

In summary, the present code design method is optimized for IRZH codes with serial and parallel decoding schemes. For serial decoding, the EXIT functions are obtained via simulation; on the other hand, for parallel decoding, the EXIT functions of Hadamard codes in the context of RZH codes are derived. With these EXIT functions, BERs for a given code profile can be easily estimated and either curve fitting (for serial decoding) or differential evolution (DE) technique (for parallel decoding) can be employed to optimize the degree profile for the given design parameters, e.g., the coding rate and the Hadamard order. The techniques introduced in this report can also be easily extended to the design of general low-density parity-check codes where the check nodes are replaced by other linear block codes, e.g., Hadamard codes or Hamming codes.

The present code design method for irregular repeat-zigzag-Hadamard (IRZH) codes to approach capacity with turbo-like serial decoding or LDPC-like parallel decoding is quite different from current techniques and provides significant advantages. With respect to current design methods for LDPC codes, a check node of a LDPC code is a single parity-check constraint. The design procedure for LDPC codes is similar to that of IRZH codes with parallel decoding. The difference is that with the present method it is a common practice to use the analytical EXIT function of the inner check node over BEC to approximate that over BIAWGN channel. Results show that such an approximation works very well for irregular LDPC code design. However, such a BEC approximation design method provides less satisfactory results for RZH code design with parallel decoding. For instance, for r=4 and d_(v)=7, with BEC approximation, one is able to design an IRZH code with a simulated SNR threshold of −0.79 dB, whereas with the present method EXIT functions derived for AWGN channel, one can obtain a code with a simulated SNR threshold of −1.15 dB, which is only 0.29 dB away from the capacity. With respect to current design methods for LDPC-Hadamard codes, the EXIT functions of the Hadamard check nodes are obtained by Monte Carlo simulation, consequently, the optimization procedure is time-consuming. With the present design method based on the analytical EXIT functions, the optimization complexity can be significantly reduced.

The present EXIT-function-based design method offers high quality design results whereas the optimization complexity is low. Note that although density-evolution can be used for the design of IRZH code, the complexity is very high.

Although with the present turbo-like decoding, in which the inner decoder is a trellis-based zigzag-Hadamard (ZH) decoder, an analytical expression of its EXIT function is not available and there is use of Monte Carlo simulations to obtain the EXIT functions of the inner code, since the EXIT function of the inner code is a one dimension function for a given SNR the optimization complexity is still low.

For LDPC-like parallel decoding, the connection bits of the ZH code are treated as degree-2 variable nodes, and the inner constituent decoder becomes a Hadamard decoder. Although simulation can still be utilized to obtain the EXIT function, the present method derives analytical EXIT functions of Hadamard codes with multiple inputs and outputs in the context of low-rate RZH codes over BIAWGN channels, and applies these results to the analysis and design of RZH codes. With analytical functions, the optimization procedure is further simplified.

Test results show that the present design method works well and serves as practical tool for the low-rate IRZH code optimization. The present design method can also be extended to general LDPC codes where the single parity-check nodes are replaced by other linear codes, e.g., Hadamard codes or Hamming codes.

The present invention has been shown and described in what are considered to be the most practical and preferred embodiments. That departures may be made there from and that obvious modifications will be implemented by those skilled in the art. It will be appreciated that those skilled in the art will be able to devise numerous arrangements and variations which, although not explicitly shown or described herein, embody the principles of the invention and are within their spirit and scope. 

1. A for selecting code parameter with minimum signal to noise ratio threshold for a communications code comprising: obtaining extrinsic information transfer (EXIT) information for a repeat-zigzag Hadamard (RZH) code responsive to a Hadamard order and a signal to noise ratio, determining code parameters for an irregular repeat zigzag Hadamard (IRZH) code for a corresponding code rate in response to the obtained EXIT values, and repeating the step of obtaining said EXIT information for a different said signal to noise ratio if said corresponding code rate is other than a selected rate.
 2. The method of claim 1, wherein said code parameters are a code ensemble for said irregular repeat zigzag Hadamard code.
 3. The method of claim 1, wherein said step of obtaining EXIT information comprises obtaining an EXIT curve for repeat-zigzag Hadamard code by Monte Carlo simulation using serial decoding.
 4. The method of claim 3, wherein said step of determining code parameters comprises an optimization of maximizing said code rate to determine said code parameters.
 5. The method of claim 3, wherein said step of obtaining said EXIT information for a different said signal to noise ratio comprises increasing said signal to noise ratio if said corresponding code rate is less than said target rate.
 6. The method of claim 3, wherein said step of obtaining said EXIT information for a different said signal to noise ratio comprises decreasing said signal to noise ratio if said corresponding code rate is greater than said target rate .
 7. The method of claim 3, wherein said corresponding code rate is related to a bit error rate.
 8. The method of claim 3, wherein a bit error rate is a function of said signal to noise ratio and said corresponding code rate.
 9. The method of claim 1, wherein said step of obtaining EXIT information comprises obtaining an EXIT function for parallel decoding of said repeat-zigzag Hadamard code by using equations.
 10. The method of claim 1, wherein said step of obtaining EXIT information comprises determining a degree profile that has minimum bit error rate BER by using differential evolution.
 11. The method of claim 10, wherein said step of obtaining EXIT information comprises computing said bit error rate during differential evolution optimization by mutual information tracking.
 12. The method of claim 9, wherein said step of determining code parameters comprises minimizing a bit error rate BER corresponding to said code rate.
 13. The method of claim 9, wherein said step of obtaining said EXIT information for a different said signal to noise ratio comprises decreasing said signal to noise ratio if a bit error rate corresponding to said code rate is less than a target bit error rate.
 14. The method of claim 9, wherein said equations include for the information bits ${I_{E,d}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}{\sum\limits_{g = 0}^{1}\quad{\sum\limits_{h = 0}^{r}\quad{\sum\limits_{j = 0}^{m - 1}\quad{\sum\limits_{k = 0}^{1}\quad{\left( {A_{g,h,j,k}^{d,{odd}} - A_{g,h,j,k}^{d,{even}}} \right){\sum\limits_{i = 1}^{\infty}\quad{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)} \cdot {\Phi_{i}^{g}\left( m_{q} \right)}}{\Phi_{i}^{h}\left( m_{d} \right)}{\Phi_{i}^{j}\left( m_{p} \right)}{\Phi_{i}^{k}\left( m_{p_{m}} \right)}}}}}}}}}}},$ for the connection bits ${I_{E,q}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}\quad{\sum\limits_{h = 0}^{r}\quad{\sum\limits_{j = 0}^{m - 1}\quad{\sum\limits_{k = 0}^{1}\quad{\left( {A_{h,j,k}^{d,{odd}} - A_{h,j,k}^{d,{even}}} \right){\sum\limits_{i = 1}^{\infty}\quad{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)} \cdot {\Phi_{i}^{h}\left( m_{d} \right)}}{\Phi_{i}^{j}\left( m_{p} \right)}{\Phi_{i}^{k}\left( m_{p_{m}} \right)}}}}}}}}}},{and}$ for the last parity bit $I_{E,p_{m}}^{BIAWGN} \cong {1 - {\frac{1}{\ln\quad 2}{\sum\limits_{g = 0}^{1}\quad{\sum\limits_{h = 0}^{r}\quad{\sum\limits_{j = 0}^{m}\quad{\left( {A_{g,h,j}^{p_{m},{odd}} - A_{g,h,j}^{p_{m},{even}}} \right){\sum\limits_{i = 1}^{\infty}\quad{{\frac{1}{\left( {2i} \right)\left( {{2i} - 1} \right)} \cdot {\Phi_{i}^{g}\left( m_{q} \right)}}{\Phi_{i}^{h}\left( m_{d} \right)}{{\Phi_{i}^{j}\left( m_{p} \right)}.}}}}}}}}}$
 15. A method for selecting code parameter with minimum signal to noise ratio threshold for a communications code comprising: choosing a signal to noise ratio, selecting a Hadamard code order, obtaining extrinsic information transfer (EXIT) information for one of a serial decoding and a parallel decoding of a irregular repeat-zigzag Hadamard (IRZH) code responsive to said Hadamard order and said signal to noise ratio, determining a code ensemble for said irregular repeat zigzag Hadamard (IRZH) code for a related bit error rate in response to the obtained EXIT information, and changing the signal to noise ratio for repeated said steps of obtaining said EXIT information and said determining a code ensemble for a different said signal to noise ratio if said related bit error rate is other than a target rate.
 16. The method of claim 15, wherein said EXIT information is a curve for said irregular repeat-zigzag Hadamard (IRZH) code obtained by Monte Carlo simulation using said serial decoding.
 17. The method of claim 15, wherein said EXIT information is a function for parallel decoding said irregular repeat-zigzag Hadamard (IRZH) code using equations. 